package com.lanou3g.code0423.set;

import java.util.*;

/**
 * Created by dllo on 18/4/23.
 */
public class Test02 {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(2);
        set.add(6);

        //获取迭代器
        Iterator<Integer> interator = set.iterator();
        //只要迭代器有下一个元素 (增强for循环使用的就是迭代器)
        while (interator.hasNext()){
            //从迭代器中取下一个元素
            Integer i = interator.next();
            //使用迭代器删除元素
            if (i%2 == 0){
                interator.remove();
            }
            System.out.println(i);
        }
        //正常遍历集合使用增强for循环删除,要删除元素才会选择使用迭代器
        System.out.println("删除后:");
        for (Integer integer : set) {

            System.out.println(integer);
        }

//实现迭代器( iterable )接口才可以用迭代器,数组用不了迭代器
        List<Integer> a =  new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            a.add(i);
        }

        //隔一个删除
        for (int i = 0; i < a.size(); i++) {
            if (i%2==1){
                a.remove(i); // 每次删除数组下标都会发生变化,所以使用迭代器,避免产生下表变化的错删,可以从后往前遍历进行删除,前面的下标没有影响
            }
        }


        for (Integer integer : a) {
            System.out.println(integer);
        }


    }





}
